
package com.scott.proxy.lesson01.entity;

import java.lang.reflect.Method;

import com.scott.proxy.lesson01.proxy.InvocationHandler;


/**
 * TimeHandler 是代理对象
 * 动态代理的优点： 可以对任意的对象。对象中的任意方法。进行任意的代理（日志 权限  事务 执行时间）
 */
public class TimeProxy implements InvocationHandler {

	/**
	 * 目标对象  被代理的对象  对哪个对象进行代理
	 */
	private Object target;
	



	public TimeProxy(Object target) {
		super();
		this.target = target;
	}




	@Override
	public void invoke(Object proxy,Method method) throws Exception {
		System.out.println("代理类=["+proxy.getClass().getName()+"]");
		long begin = System.currentTimeMillis();
		System.out.println("开始时间=["+begin+"]");
		
		//调用被代理对象自己的方法 tank.move() 基于1个假设 方法没有参数
		method.invoke(target);
		
		long end = System.currentTimeMillis();
		System.out.println("结束时间=["+end+"]");
		System.out.println("方法的运行时间：["+ (end -begin)+"]毫秒...");
		
		
	}

}
